package com.sheng.leetcode.year2023.month12.day27;

import org.junit.Test;

/**
 * @author by ls
 * @date 2023/12/27
 * <p>
 * 2660. 保龄球游戏的获胜者<p>
 * <p>
 * 给你两个下标从 0 开始的整数数组 player1 和 player2 ，分别表示玩家 1 和玩家 2 击中的瓶数。<p>
 * 保龄球比赛由 n 轮组成，每轮的瓶数恰好为 10 。<p>
 * 假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为：<p>
 * 如果玩家在该轮的前两轮的任何一轮中击中了 10 个瓶子，则为 2xi 。<p>
 * 否则，为 xi 。<p>
 * 玩家的得分是其 n 轮价值的总和。<p>
 * 返回<p>
 * 如果玩家 1 的得分高于玩家 2 的得分，则为 1 ；<p>
 * 如果玩家 2 的得分高于玩家 1 的得分，则为 2 ；<p>
 * 如果平局，则为 0 。<p>
 * <p>
 * 示例 1：<p>
 * 输入：player1 = [4,10,7,9], player2 = [6,5,2,3]<p>
 * 输出：1<p>
 * 解释：player1 的得分是 4 + 10 + 2*7 + 2*9 = 46 。<p>
 * player2 的得分是 6 + 5 + 2 + 3 = 16 。<p>
 * player1 的得分高于 player2 的得分，所以 play1 在比赛中获胜，答案为 1 。<p>
 * <p>
 * 示例 2：<p>
 * 输入：player1 = [3,5,7,6], player2 = [8,10,10,2]<p>
 * 输出：2<p>
 * 解释：player1 的得分是 3 + 5 + 7 + 6 = 21 。<p>
 * player2 的得分是 8 + 10 + 2*10 + 2*2 = 42 。<p>
 * player2 的得分高于 player1 的得分，所以 play2 在比赛中获胜，答案为 2 。<p>
 * <p>
 * 示例 3：<p>
 * 输入：player1 = [2,3], player2 = [4,1]<p>
 * 输出：0<p>
 * 解释：player1 的得分是 2 + 3 = 5 。<p>
 * player2 的得分是 4 + 1 = 5 。<p>
 * player1 的得分等于 player2 的得分，所以这一场比赛平局，答案为 0 。<p>
 * <p>
 * 提示：<p>
 * n == player1.length == player2.length<p>
 * 1 <= n <= 1000<p>
 * 0 <= player1[i], player2[i] <= 10<p>
 */
public class LeetCode2660 {

    @Test
    public void test01() {
//        int[] player1 = {4, 10, 7, 9}, player2 = {6, 5, 2, 3};
//        int[] player1 = {3, 5, 7, 6}, player2 = {8, 10, 10, 2};
//        int[] player1 = {2, 3}, player2 = {4, 1};
        int[] player1 = {10, 2, 2, 3}, player2 = {3, 8, 4, 5};
        System.out.println(new Solution().isWinner(player1, player2));
    }
}

class Solution {
    public int isWinner(int[] player1, int[] player2) {
        int sum1 = 0, sum2 = 0;
        int n = player1.length;
        for (int i = 0; i < n; i++) {
            if (i == 0) {
                sum1 += player1[i];
                sum2 += player2[i];
            } else if (i == 1) {
                if (player1[i - 1] == 10) {
                    sum1 += 2 * player1[i];
                } else {
                    sum1 += player1[i];
                }
                if (player2[i - 1] == 10) {
                    sum2 += 2 * player2[i];
                } else {
                    sum2 += player2[i];
                }
            } else {
                if (player1[i - 1] == 10 || player1[i - 2] == 10) {
                    sum1 += 2 * player1[i];
                } else {
                    sum1 += player1[i];
                }
                if (player2[i - 1] == 10 || player2[i - 2] == 10) {
                    sum2 += 2 * player2[i];
                } else {
                    sum2 += player2[i];
                }
            }
        }
        return sum1 > sum2 ? 1 : sum1 < sum2 ? 2 : 0;
    }
}
